import { PaginationResponse } from "@/types/api-common";

// 导出分页相关类型
export type { PaginationResponse } from "@/types/api-common";

// 分页参数类型
export interface PaginationParams {
  current?: number;
  pageSize?: number;
  page?: number;
}

/**
 * 创建标准分页响应
 * @param data 数据数组
 * @param total 总数量
 * @param page 当前页码
 * @param pageSize 每页大小
 * @returns 标准分页响应对象
 */
export function createPaginationResponse<T>(
  data: T[],
  total: number,
  page: number,
  pageSize: number
): PaginationResponse<T> {
  return {
    data,
    total,
    page,
    pageSize,
    totalPages: Math.ceil(total / pageSize)
  };
}

/**
 * 解析分页参数
 * @param params 原始参数对象
 * @returns 解析后的分页参数
 */
export function parsePaginationParams(params: any): {
  page: number;
  pageSize: number;
  skip: number;
} {
  const page = Math.max(1, parseInt(params.page || 1));
  const pageSize = Math.min(100, Math.max(1, parseInt(params.pageSize || 20)));
  const skip = (page - 1) * pageSize;

  return {
    page,
    pageSize,
    skip
  };
}